package com.dotc.kotlinmvvmdemo.newPackage

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.lifecycle.LifecycleObserver
import com.dotc.kotlinmvvmdemo.NewFragment.MainFragment
import com.dotc.kotlinmvvmdemo.R
import com.dotc.kotlinmvvmdemo.base.BaseActivity
import com.dotc.kotlinmvvmdemo.databinding.ActivityNewMainBinding
import com.dotc.kotlinmvvmdemo.viewModel.NewMainViewModel
import kotlinx.android.synthetic.main.activity_new_main.*

/**
 * 新的封装Activity
 */
class NewMainActivity : BaseActivity<ActivityNewMainBinding, NewMainViewModel>() {

    override fun modelClass(): Class<NewMainViewModel>? {
        return NewMainViewModel::class.java
    }

    override fun layout(): Int {
        return R.layout.activity_new_main
    }

    override fun initData() {
        binding!!.viewModel=viewModel
        binding!!.lifecycleOwner=this
        //添加生命周期监听
        lifecycle.addObserver(viewModel as LifecycleObserver)
        binding!!.viewModel!!.context = this@NewMainActivity


    }

    override fun initObserve() {

        tv_click.setOnClickListener {
           // replaceFragment(MainFragment())
        }

    }

    //Fragment启动方法：

    //Fragment启动方法：
    var fragmentManager: FragmentManager? = null
    var transaction: FragmentTransaction? = null
    private fun replaceFragment(fragment: Fragment) {
        // 1.获取FragmentManager，在活动中可以直接通过调用getFragmentManager()方法得到
        fragmentManager = getSupportFragmentManager()

        // 2.开启一个事务，通过调用beginTransaction()方法开启
        transaction = fragmentManager?.beginTransaction()
        // 3.向容器内添加或替换碎片，一般使用replace()方法实现，需要传入容器的id和待添加的碎片实例
        transaction?.replace(R.id.fr_container, fragment) //fr_container不能为fragment布局，可使用线性布局相对布局等。
        // 4.使用addToBackStack()方法，将事务添加到返回栈中，填入的是用于描述返回栈的一个名字
        transaction?.addToBackStack(null)
        // 5.提交事物,调用commit()方法来完成
        transaction?.commit()
    }

}